package com.cms.recursoshumanos.activity.catalogo;

import java.lang.ref.WeakReference;

import com.example.frontendrecursoshumanos.R;
import com.cms.recursoshumanos.activity.main.MainRecursosHumanosActivity;
import com.cms.recursoshumanos.cache.CarritoCompraCache;
import com.cms.recursoshumanos.cache.ListaArticuloCache;
import com.cms.recursoshumanos.component.dialog.CustomAddArticuloDialog;
import com.cms.recursoshumanos.component.dialog.CustomAddArticuloDialog.AddDialogListener;
import com.cms.recursoshumanos.handler.ImagenesHandler;
import com.cms.recursoshumanos.object.Articulo;

import android.os.AsyncTask;
import android.os.Bundle;
import android.graphics.Bitmap;
import android.view.View;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;

public class DetailArticuloActivity extends MainRecursosHumanosActivity 
{
	private Articulo elArticulo;
	@Override
	protected void onCreate(Bundle savedInstanceState) 
	{
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_detail_articulo);
		Bundle bundle = getIntent().getExtras();
		int id_articulo = Integer.parseInt(bundle.getString("id_articulo"));
		elArticulo = ListaArticuloCache.getInstance().getListaArticulo().getArticuloById(id_articulo);
		
		setComponents();
	}
	


	public void addArticuloCarrito(Articulo elArticulo, int cantidad_seleccionada)
	{
		CarritoCompraCache.getInstance().addArticuloToCarrito(elArticulo, 
																cantidad_seleccionada);
		Toast.makeText(getAppContext(), "Se Agrego el Articulo al Carrito Satisfactoriamente", Toast.LENGTH_LONG).show();
	}
	public void showPopAddCarrito(View v)
	{
		CustomAddArticuloDialog dialog = new CustomAddArticuloDialog(DetailArticuloActivity.this, elArticulo, new AddDialogListener() 
		{
			
			@Override
			public void ready(Articulo elArticulo, int cantidad_selec) 
			{
				addArticuloCarrito(elArticulo,cantidad_selec);
				
			}
			
			@Override
			public void cancelled() 
			{
				// TODO Auto-generated method stub
				
			}
		});
		dialog.show();
	}
	
	private void setComponents()
	{
		LinearLayout layout_info_general = (LinearLayout) findViewById(R.id.llInformacionGeneral);
		RelativeLayout layout_articulo_portait = (RelativeLayout) findViewById(R.id.rlArticuloPortrait);
		
		TextView nombre_articulo_portait = (TextView) layout_articulo_portait.findViewById(R.id.tvPortaitNombreArticulo);
		ImageView foto_articulo_portait = (ImageView) layout_articulo_portait.findViewById(R.id.ivFotoArticulo);
		
		TextView codigo_articulo_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueCodigoArticulo);
		TextView nombre_tipo_articulo_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueNombreTipoArticulo);
		TextView precio_unitario_second_row = (TextView) layout_info_general.findViewById(R.id.tvValuePrecioUnitarioArticulo);
		TextView cantidad_disponible_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueCantidadArticulo);
		TextView descripcion_articulo_second_row = (TextView) layout_info_general.findViewById(R.id.tvValueDescripcionArticulo);
		
		//*--------------Seteo de Portait------------------------------------
		nombre_articulo_portait.setText(elArticulo.getNombreArticulo());
		
		if (elArticulo.getFotoArticulo() != null)
		{
			foto_articulo_portait.setImageBitmap(elArticulo.getFotoArticulo());
		}
		else
		{
			new DownloadImageTask(DetailArticuloActivity.this).execute(elArticulo);
		}
		
		//*--------------Seteo de Detalle------------------------------------
		codigo_articulo_second_row.setText(elArticulo.getCodigoArticulo());
		nombre_tipo_articulo_second_row.setText(elArticulo.getTipoArticulo().getNombreTipoArticulo());
		precio_unitario_second_row.setText(""+elArticulo.getPrecioUnitario());
		cantidad_disponible_second_row.setText(""+elArticulo.getCantidadDisponible());
		
		LinearLayout llDescripcion = (LinearLayout) findViewById(R.id.trDescripcionArticulo);
		if (elArticulo.getDescripcionArticulo() != null)
		{
			descripcion_articulo_second_row.setText(elArticulo.getDescripcionArticulo());
		}
		else
		{
			llDescripcion.setVisibility(View.GONE);
		}
		
	}
	
	
	private static class DownloadImageTask extends AsyncTask<Articulo, Void, Bitmap> 
	{
		WeakReference<DetailArticuloActivity> context;
		DetailArticuloActivity activity;
		private Articulo elArticulo;
	 
		public DownloadImageTask(DetailArticuloActivity detailArticuloActivity) 
		{	
			context = new WeakReference<DetailArticuloActivity>(detailArticuloActivity);
			this.activity = context.get();
		}
    	
		@Override
		protected Bitmap doInBackground(Articulo... elArticulo) 
		{
			ImagenesHandler handler = new ImagenesHandler();
			this.elArticulo = elArticulo[0];
			return handler.GetImage(this.elArticulo.getUrlFoto());
		}
		
		@Override
		protected void onPostExecute(Bitmap poster) 
		{  
			RelativeLayout layout_articulo_portrait = (RelativeLayout) activity.findViewById(R.id.rlArticuloPortrait);
			ImageView itemImageView = (ImageView) layout_articulo_portrait.findViewById(R.id.ivFotoArticulo);
	        
	        if (itemImageView != null)
	        {
        		if(poster != null)
	        	{
        			itemImageView.setImageBitmap(poster);
        			this.elArticulo.setFotoArticulo(poster);
    				ListaArticuloCache.getInstance().getListaArticulo().actualizarArticulo(elArticulo);
	        	}
	        }
		}
    }

}
